<?php
/**
 * This file is form http://findcat.cn
 *
 * @link     https://findcat.cn
 * @email    1476982312@qq.com
 */
namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\DB;

class LaravelFanerBlogInstallCommand extends Command
{
    /**
     * @var string
     */
    protected $signature = 'blog:install {--type=production}';

    /**
     * @var string
     */
    protected $description = '安装犯二青年博客，并初始化';

    /**
     * LaravelFanerBlogInstallCommand constructor.
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $type = $this->option('type');

        switch ($type) {
            case 'production':
                //运行迁移文件
                $this->call('migrate');

                //执行管理端用户、权限、角色、菜单数据清空
                DB::table('admin_users')->truncate();
                DB::table('admin_menu')->truncate();
                DB::table('admin_permissions')->truncate();
                DB::table('admin_user_permissions')->truncate();
                DB::table('admin_role_menu')->truncate();
                DB::table('admin_role_permissions')->truncate();
                DB::table('admin_role_users')->truncate();
                DB::table('admin_roles')->truncate();
                DB::table('admin_operation_log')->truncate();

                //执行管理端用户、权限、角色、菜单填充
                $this->call('db:seed', ['--class' => \Database\Seeder\BlogInstallDatabaseSeeder::class]);
                break;
            case 'develop':
                //回滚迁移文件
                $this->call('migrate:rollback');

                //运行迁移文件
                $this->call('migrate');

                //执行管理端用户、权限、角色、菜单数据清空
                DB::table('admin_users')->truncate();
                DB::table('admin_menu')->truncate();
                DB::table('admin_permissions')->truncate();
                DB::table('admin_user_permissions')->truncate();
                DB::table('admin_role_menu')->truncate();
                DB::table('admin_role_permissions')->truncate();
                DB::table('admin_role_users')->truncate();
                DB::table('admin_roles')->truncate();
                DB::table('admin_operation_log')->truncate();

                //执行填充
                $this->call('db:seed', ['--class' => \Database\Seeder\TestBlogInstallDatabaseSeeder::class]);
                break;
            default:
                $this->info('安装类型输入有误！');
        }

        echo '犯二青年博客系统安装成功成功';
    }
}
